<?php
namespace App\Services;

use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

class TranslateService
{
    /**
     * 获取远程简历分析
     * @param $fname
     */
    public function getTranslate($input,$output,$data)
    {
        $url = "https://api.deepseek.com/v1/translate";            // 将127.0.0.1替换为部署服务的ip
        $apiKey = env('DEEPSEEK_API_KEY');
//        $response = Http::post($url, [
//            'headers' => [
//                'Accept' => 'application/json',
//                'Authorization' => 'Bearer '.$apiKey // 如果需要认证的话
//            ],
//            'body'=>[
//              "json"=>
//              [
//                "text"=> "'.$data.'",
//                "source_lang"=>"'.$input.'",
//                "target_lang"=>"'.$output.'",
//              ]]
//        ]);
//        dd($response);
//        $data = $response->json(); // 自动解析JSON响应为数组或对象，取决于Laravel版本和配置
//
//        return response()->json($data); // 返回数据作为JSON响应
        // 构建 API 请求
//        $headers = [
//            "Authorization: Bearer ".$apiKey,
//            "Content-Type: application/json"
//        ];
//
//        $postData = [
//            'text' => $data,
//            'source_lang' => $input,
//            'target_lang' => $output
//        ];
//
//        // 调用 DeepSeek API
//        $ch = curl_init();
//        curl_setopt($ch, CURLOPT_URL, $url);
//        curl_setopt($ch, CURLOPT_POST, true);
//        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
//        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//
//        $response = curl_exec($ch);
//        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//        curl_close($ch);
//
//        // 处理 API 响应
//        if ($httpCode == 200) {
//            $responseData = json_decode($response, true);
//            echo json_encode(['translated_text' => $responseData['result']]);
//        } else {
//            echo json_encode(['error' => "API 请求失败 (HTTP {$httpCode})"]);
//        }
        $newData = trim($data);
        if($input=='en'||$output=='en'){
            $content = '你是一个中英文翻译专家，将用户输入的中文翻译成英文，或将用户输入的英文翻译成中文。对于非中文内容，它将提供中文翻译结果。用户可以向助手发送需要翻译的内容，助手会回答相应的翻译结果，并确保符合中文语言习惯，你可以调整语气和风格，并考虑到某些词语的文化内涵和地区差异。同时作为翻译家，需将原文翻译成具有信达雅标准的译文。\"信\" 即忠实于原文的内容与意图；\"达\" 意味着译文应通顺易懂，表达清晰；\"雅\" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神，又符合目标语言文化和读者审美的翻译。';
        }else if($input=='jp'||$output=='jp'){
            $content = '你是一个中日文翻译专家，将用户输入的中文翻译成日文，或将用户输入的日文翻译成中文。对于非中文内容，它将提供中文翻译结果。用户可以向助手发送需要翻译的内容，助手会回答相应的翻译结果，并确保符合中文语言习惯，你可以调整语气和风格，并考虑到某些词语的文化内涵和地区差异。同时作为翻译家，需将原文翻译成具有信达雅标准的译文。\"信\" 即忠实于原文的内容与意图；\"达\" 意味着译文应通顺易懂，表达清晰；\"雅\" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神，又符合目标语言文化和读者审美的翻译。';
        }
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://api.deepseek.com/chat/completions',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS =>'{
  "messages": [
    {
      "content": "'.$content.'",
      "role": "system"
    },
    {
      "content": "'.$newData.'",
      "role": "user"
    }
  ],
  "model": "deepseek-chat",
  "frequency_penalty": 0,
  "max_tokens": 2048,
  "presence_penalty": 0,
  "response_format": {
    "type": "text"
  },
  "stop": null,
  "stream": false,
  "stream_options": null,
  "temperature": 1,
  "top_p": 1,
  "tools": null,
  "tool_choice": "none",
  "logprobs": false,
  "top_logprobs": null
}',
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json',
                'Accept: application/json',
                'Authorization: Bearer '.$apiKey
            ),
        ));

        $response = curl_exec($curl);
//        dd($response);
        curl_close($curl);
        $responseData = json_decode($response, true);
//        dd($responseData);
        if($responseData!=null && $responseData['choices'] && $responseData['choices']!=null){
            return $responseData['choices'][0]['message']['content'];
        }else{
            return -1;
        }

    }
}
